﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

using Padelcenter.Common;
using Padelcenter.DataAccess;

namespace Padelcenter.BusinessLogic.Get
{
    public class GetTipoProducto : IBusinessLogic
    {
        public GetTipoProducto() { }

        public void Invoke()
        {
            TipoProducto_Select oTipoProductoSelect = new TipoProducto_Select();
            oTipoProductoSelect.TipoProducto = this.TipoProducto;

            this.Resultset = oTipoProductoSelect.Get();
        }

        public List<TipoProducto> TipoProductoList()
        {
            this.Invoke();

            List<TipoProducto> listaTipoProducto = new List<TipoProducto>();

            DataTable dTable = new DataTable();
            dTable = this.Resultset.Tables[0];

            if (dTable.Rows.Count > 0)
            {
                TipoProducto oTipoProducto;
                foreach (DataRow r in dTable.Rows)
                {
                    oTipoProducto = new TipoProducto();

                    oTipoProducto.IdTipoProducto = Convert.ToInt32(r["idTipoProducto"]);

                    //Begin TipoProductoPadre
                    Common.TipoProducto oTipoProductoPadre = new Common.TipoProducto();
                    oTipoProductoPadre.IdTipoProducto = Convert.ToInt32(r["idTipoProductoPadre"]);

                    TipoProducto_Select oTipoProductoSelect = new TipoProducto_Select();
                    oTipoProductoSelect.TipoProducto = oTipoProductoPadre;

                    //DataTable oDT = new DataTable();
                    DataRow oDR;
                    oDR = oTipoProductoSelect.Get().Tables[0].Rows[0];

                    oTipoProductoPadre.IdTipoProducto = Convert.ToInt32(oDR["idTipoProducto"]);
                    oTipoProductoPadre.IdTipoProductoPadre = Convert.ToInt32(oDR["idTipoProductoPadre"]);
                    oTipoProductoPadre.Descripcion = oDR["TipoProducto"].ToString();
                    oTipoProductoPadre.Orden = Convert.ToInt32(oDR["Orden"]);
                    oTipoProductoPadre.Activo = Convert.ToBoolean(oDR["Activo"]);

                    oTipoProducto.TipoProductoPadre = oTipoProductoPadre;
                    //End TipoProductoPadre

                    oTipoProducto.IdTipoProductoPadre = Convert.ToInt32(r["idTipoProductoPadre"]);
                    oTipoProducto.Descripcion = r["TipoProducto"].ToString();
                    oTipoProducto.Orden = Convert.ToInt32(r["Orden"]);
                    oTipoProducto.Activo = Convert.ToBoolean(r["Activo"]);

                    listaTipoProducto.Add(oTipoProducto);
                }
            }

            return listaTipoProducto;
        }

        private DataSet _resultset;
        private TipoProducto _tipoProducto;

        public TipoProducto TipoProducto
        {
            get { return _tipoProducto; }
            set { _tipoProducto = value; }
        }

        public DataSet Resultset
        {
            get { return _resultset; }
            set { _resultset = value; }
        }
    }

    public class GetTipoProductoDescripcion : IBusinessLogic
    { 
        public GetTipoProductoDescripcion() { }

        public void Invoke()
        {
            TipoProductoDescripcion_Select oTipoProductoDescripcionSelect = new TipoProductoDescripcion_Select();
            oTipoProductoDescripcionSelect.TipoProductoDescripcion = this.TipoProductoDescripcion;

            this.Resultset = oTipoProductoDescripcionSelect.Get();
        }

        public List<TipoProductoDescripcion> TipoProductoDescripcionList()
        {
            this.Invoke();

            List<TipoProductoDescripcion> listaTipoProductoDescripcion = new List<TipoProductoDescripcion>();

            DataTable dTable = new DataTable();
            dTable = this.Resultset.Tables[0];

            if (dTable.Rows.Count > 0)
            {
                TipoProductoDescripcion oTipoProductoDescripcion;

                foreach (DataRow r in dTable.Rows)
                {
                    oTipoProductoDescripcion = new TipoProductoDescripcion();

                    TipoProducto oTipoProducto = new TipoProducto();
                    oTipoProducto.IdTipoProducto = Convert.ToInt32(r["idTipoProducto"]);

                    GetTipoProducto oGetTipoProducto = new GetTipoProducto();
                    oGetTipoProducto.TipoProducto = oTipoProducto;

                    oTipoProductoDescripcion.TipoProducto = oGetTipoProducto.TipoProductoList()[0];
                    
                    
                    oTipoProductoDescripcion.Descripcion = r["Descripcion"].ToString();
                    
                    Idioma oIdioma = new Idioma();
                    oIdioma.IdIdioma = Convert.ToInt32(r["idIdioma"]);

                    GetIdioma oGetIdioma = new GetIdioma();
                    oGetIdioma.Idioma = oIdioma;

                    oTipoProductoDescripcion.Idioma = oGetIdioma.IdiomaList()[0];

                    listaTipoProductoDescripcion.Add(oTipoProductoDescripcion);
                }
            }

            return listaTipoProductoDescripcion;
        }

        private DataSet _resultset;
        private TipoProductoDescripcion _tipoProductoDescripcion;

        public TipoProductoDescripcion TipoProductoDescripcion
        {
            get { return _tipoProductoDescripcion; }
            set { _tipoProductoDescripcion = value; }
        }
        
        public DataSet Resultset
        {
            get { return _resultset; }
            set { _resultset = value; }
        }
    }

    public class GetTipoProductoTipoPropiedad : IBusinessLogic
    {
        public GetTipoProductoTipoPropiedad() { }

        public void Invoke()
        {
            TipoProductoTipoPropiedad_Select oTipoProductoTipoPropiedadSelect = new TipoProductoTipoPropiedad_Select();
            oTipoProductoTipoPropiedadSelect.TipoProductoTipoPropiedad = this.TipoProductoTipoPropiedad;

            this.Resultset = oTipoProductoTipoPropiedadSelect.Get();
        }

        public List<TipoProductoTipoPropiedad> TipoProductoTipoPropiedadList()
        {
            this.Invoke();

            List<TipoProductoTipoPropiedad> listaTipoProductoTipoPropiedad = new List<TipoProductoTipoPropiedad>();

            DataTable dTable = new DataTable();
            dTable = this.Resultset.Tables[0];

            if (dTable.Rows.Count > 0)
            {
                TipoProductoTipoPropiedad oTipoProductoTipoPropiedad;
                foreach (DataRow r in dTable.Rows)
                {
                    oTipoProductoTipoPropiedad = new TipoProductoTipoPropiedad();

                    TipoProducto oTipoProducto = new TipoProducto();
                    oTipoProducto.IdTipoProducto = Convert.ToInt32(r["idTipoProducto"]);
                    GetTipoProducto oGetTipoProducto = new GetTipoProducto();
                    oGetTipoProducto.TipoProducto = oTipoProducto;

                    oTipoProductoTipoPropiedad.TipoProducto = oGetTipoProducto.TipoProductoList()[0];

                    TipoPropiedad oTipoPropiedad = new TipoPropiedad();
                    oTipoPropiedad.IdTipoPropiedad = Convert.ToInt32(r["idTipoPropiedad"]);
                    GetTipoPropiedad oGetTipoPropiedad = new GetTipoPropiedad();
                    oGetTipoPropiedad.TipoPropiedad = oTipoPropiedad;

                    oTipoProductoTipoPropiedad.TipoPropiedad = oGetTipoPropiedad.TipoPropiedadList()[0];

                    listaTipoProductoTipoPropiedad.Add(oTipoProductoTipoPropiedad);
                    
                }
            }

            return listaTipoProductoTipoPropiedad;
        }

        private DataSet _resultset;
        private TipoProductoTipoPropiedad _tipoProductoTipoPropiedad;

        public TipoProductoTipoPropiedad TipoProductoTipoPropiedad
        {
            get { return _tipoProductoTipoPropiedad; }
            set { _tipoProductoTipoPropiedad = value; }
        }
        

        public DataSet Resultset
        {
            get { return _resultset; }
            set { _resultset = value; }
        }
    }
}
